class MyArray {
    constructor(x) {
        this.array = new Array(x)
        this.x = x
        this.size = 0
    }
    /**
     * 数组插入元素
     * @param index 插入的元素
     * @param element 插入的元素
    */
    insert (index, element) {
        // 判断访问下标是否超出范围
        if (index < 0 || index > this.size) {
            throw new Error("超出数组实际元素范围！");
        }
        // 如果实际元素达到数组容量上限，数组扩容
        if (this.size >= this.x) {
            this.resize();
        }
        // 从右向左循环，逐个元素向右挪一位
        for (let i = this.size - 1; i >= index; i--) {
            console.log(this.array[i])
            this.array[i + 1] = this.array[i];
        }
        // 腾出的位置放入新元素
        this.array[index] = element;
        this.size++;
    }
    /**
     * 数组扩容
     * */
    resize () {
        this.x += this.x
    }
    /**
     * 数组删除元素
     * @param index 删除的位置
     * */
    delete (index) {
        // 判断访问下标是否超出范围
        if (index < 0 || index >= this.size) {
            throw new Error("超出数组实际元素范围！");
        }
        // 从左向右循环，逐个元素向左挪一位。
        for (let i = index; i < this.size - 1; i++) {
            this.array[i] = this.array[i + 1];
        }
        this.array.pop()
        this.size--;
    }
    /**
     * 输出数组
     * */
    output () {
        for (let i = 0; i < this.size; i++) {
            console.log(this.array[i])
        }
    }
}

let myArray = new MyArray(3)
console.log('myArray', myArray)

myArray.insert(0, 3);
myArray.insert(1, 7);
myArray.insert(2, 999);
myArray.insert(3, 2);
myArray.insert(4, 1);
myArray.insert(5, 66);
myArray.delete(0);
myArray.output();